<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>闭包的理解</title>
</head>
<body>
    <!--
        1. 如何产生闭包?
            * 当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包
        2. 闭包到底是什么?
            * 使用chrome调试查看
            * 理解一: 闭包是嵌套的内部函数(绝大部分人)
            * 理解二: 包含被引用变量(函数)的对象(极少数人)
            * 注意: 闭包存在于嵌套的内部函数中
        3. 产生闭包的条件?
            * 函数嵌套
            * 内部函数引用了外部函数的数据(变量/函数)


            外部函数每调用一次就会产生一个闭包

            闭包的一个作用是让外部以一定的方式操作函数内部的数据
            这里的一定的方式指的就是函数内部的函数，为了让函数外部可以
            操作到函数内部的的数据要将函数内部的函数返回

-->
<script type="text/javascript">
    function fn1 () {
      var a = 3
      function fn2 () {
        console.log(a)
      }
    }
    fn1()
  
  </script>
</body>
</html>